package com.ctshk.rpc.scenic.service.app;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.rpc.scenic.dto.app.ScenicProductEsDTO;
import com.ctshk.rpc.scenic.dto.app.ScenicProductEsDetailDTO;
import com.ctshk.rpc.scenic.dto.app.ScenicProductEsInfoDTO;
import com.ctshk.rpc.scenic.dto.app.inner.ScenicTicketListDTO;
import com.ctshk.rpc.scenic.req.app.ScenicProductEsListReq;
import com.ctshk.rpc.scenic.req.app.ScenicProductEsReq;

import java.util.List;

/**
 * <p>
 *     景点门票 服务类
 * </p>
 */
@SuppressWarnings("all")
public interface IScenicTicketEsSearchService {
    // 查询缓存中的门票列表
    Result<PageResponse<ScenicTicketListDTO>> selectScenicEsTicketList(
            ScenicProductEsListReq scenicProductEsListReq,
            Integer pageNum,
            Integer pageSize
    );

    Result<ScenicProductEsInfoDTO> selectScenicEsInfo(Long channelId, Long productId, Long scenicId, Long attrId);
    /**
     * ES缓存更新
     */
    Result cacheUpdate(ScenicProductEsReq req);

    /**
     * redis更新缓存
     */
    Result redisUpdate(ScenicProductEsReq req);

    Result<ScenicProductEsInfoDTO> selectScenicEsInfo(Long channelId, Long productId, Long scenicId);

    // 查询门票详情
    ScenicProductEsDetailDTO selectScenicDetailEs(Long channelId, Long productId, Long userId);

    List<ScenicProductEsDTO> selectScenicTicketListByProductId(Long channelId, Long productId);

    // 重置门票ES索引
    String initIndex();
}
